#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <assert.h>

typedef int QNodeType;

typedef struct QNode
{
	QNodeType val;
	struct QNode* next;
}QNode;

typedef struct Queue
{
	QNode* front;
	QNode* tail;
	size_t size;
}Queue;


void QueueInit(Queue* q);

void QueuePush(Queue* q, QNodeType x);

void QueuePop(Queue* q);

bool QueueIs_empty(const Queue* q);

size_t QueueSize(const Queue* q);

QNodeType QueueFront(const Queue* q);

QNodeType QueueBack(const Queue* q);

void QueueDestory(Queue* q);

